package com.xbongbong.saas.service;

import com.xbongbong.paas.field.ItemPoJo;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseVO;
import com.xbongbong.pro.dictionary.pojo.dto.DictionaryAddDTO;
import com.xbongbong.pro.dictionary.pojo.dto.DictionaryListDTO;
import com.xbongbong.pro.dictionary.pojo.vo.DictionaryVO;
import com.xbongbong.saas.enums.dictionary.DictionaryEnum;

import java.util.List;
import java.util.Map;

/**
 * @author haibin.zhang
 * @version v1.0
 * @date 2019/1/31 9:03
 * @since v1.0
 */
public interface DictionaryService {

    /**
     * 添加数据字典
     * @param dictionaryAddDTO 参数
     * @return 基本信息
     * @throws XbbException XbbException
     */
    BaseVO add(DictionaryAddDTO dictionaryAddDTO) throws XbbException;

    /**
     * 获取数据字典列表
     * @param dictionaryListDTO 参数
     * @return 数据字典列表
     * @throws XbbException XbbException
     */
    DictionaryVO list(DictionaryListDTO dictionaryListDTO) throws XbbException;

    /**
     * 获取数据字典列表（只获取启用的，且不限制addtionnalField）
     * 业务场景使用
     * @param dictionaryEnum 数据字典类型
     * @param corpid 公司id
     * @param formId 表单id，不需要时传null
     * @return 数据字典列表
     * @throws XbbException XbbException
     */
    List<ItemPoJo> getArrayList(DictionaryEnum dictionaryEnum, String corpid, Long formId) throws XbbException;

    /**
     * 获取数据字典map
     * @param dictionaryEnum 数据字典类型
     * @param corpid 公司id
     * @param formId 表单id，不需要时传null
     * @return
     * @throws XbbException
     */
    Map<String,String> getDictionaryMap(DictionaryEnum dictionaryEnum, String corpid, Long formId) throws XbbException;
}
